//
//  KKEmoticonPackage.swift
//  EmotionKeyBoard
//
//  Created by King.Kong. on 16/5/31.
//  Copyright © 2016年 King.Kong. All rights reserved.
//

import UIKit

//每页显示的表情数据的个数
let EmoticonPageCount = 21
let EmoticonColCount = 7
let EmoticonRowCount = 3

class KKEmoticonPackage: NSObject {
    
    var title: String?
    var sectionEmoticon: [[KKEmoticon]] = [[KKEmoticon]]()
    //分组表情模型对象的构造方法
    init(id: String,title: String, array: [[String : String]]) {
        self.title = title
        super.init()
        //遍历字典类型的数组 字典转模型
        var tempArray = [KKEmoticon]()
        var index = 0
        for item in array {
            let e = KKEmoticon(id: id,dict: item)
            print(e.chs)
            //添加到数组中
            tempArray.append(e)
            index+=1
            //每隔20个表情添加一个删除的模型
            if index == 20 {
                //添加一个删除的模型
                let delete = KKEmoticon(isDelete: true)
                //添加到数组中
                tempArray.append(delete)
                //重置 index
                index = 0
            }

        }

        //操作删除模型的数据完毕后 就应该看每组的最后一页能够装满21个表情
        //如果不能装满21个表情 添加空白表情
        let delta = tempArray.count % 21
        print(delta)
        //如果是需要添加空白表情才进入分支
        //如果不判断会造成删除按钮多添加一个
        if delta != 0 {
            for _ in delta..<20 {
                //添加空白的表情模型
                let space = KKEmoticon(isEmpty: true)
                tempArray.append(space)
            }
            //最后一个添加一个删除的模型
            //添加一个删除的模型
            let delete = KKEmoticon(isDelete: true)
            //添加到数组中
            tempArray.append(delete)
        }

        //转换为二维数组
        sectionEmoticon = sectionEmoticons(tempArray)

    }
    
    //需要将分组的表情的数据的数组处理成二维数组  [KKEmoticon]  -> [[KKEmoticon]]
    private func sectionEmoticons(array: [KKEmoticon]) -> [[KKEmoticon]] {
        
        //完成对 array 的分页截取 每页截取21个
        let pageCount = (array.count - 1) / EmoticonPageCount + 1
        //分页截取  在swift中的数组没有截取的方法
        //但是swift中的数组 和 OC中的数组可以无缝转换
        var sectionArr = [[KKEmoticon]]()
        for i in 0..<pageCount {
            let loc = i * EmoticonPageCount
            var length = EmoticonPageCount
            //如果loc + length > 数组的数量 需要修正长度
            if loc + length > array.count {
                //修改length
                length = array.count - loc
            }
            let range = NSMakeRange(loc, length)
            let subArray = (array as NSArray).subarrayWithRange(range)
            sectionArr.append(subArray as! [KKEmoticon])
        }
        return sectionArr


}
}